package dletc.job;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * 
定义个泛型类 DAO，在其中定义一个 Map 成员变量，Map 的键 为 String 类型，值为 T 类型。
 * @param <T>
 * 分别创建以下方法：
public void save(String id,T entity)： 保存 T 类型的对象到 Map 成员 变量中
public T get(String id)：从 map 中获取 id 对应的对象
public void update(String id,T entity)：替换 map 中 key 为 id 的内容, 改为 entity 对象 
public List list()：返回 map 中存放的所有 T 对象
public void delete(String id)：删除指定 id 对象 

 */


public class Dao<T> {
	
	Map<String, T> map = new HashMap<String, T>();
	
	public void save(String id,T entity){
		map.put(id, entity);
	}
	
	public T get(String id){
		T t = map.get(id);
		return t;
	}
	
	public void update(String id,T entity){
		//替换 map 中 key 为 id 的内容, 改为 entity 对象 
		if(map.containsKey(id)){
			map.put(id, entity);
		}else System.out.println("未找到该id");
		
		
	}
	//：返回 map 中存放的所有 T 对象
	public List list(){
		
		 /*Collection<T> values = map.values();
		  * ArrayList<T> list = new ArrayList<>();
		  * for(T t:values){
		  * 	list.add(t);
		  * }
		  * return list;
		  * */
		
		
		List<T> values = new ArrayList<T>();
		Set<String> keySet = map.keySet();
		for (String string : keySet) {
			values.add(map.get(string));
		}
	 
		return values;
	}
	
	public void delete(String id){
		//删除指定 id 对象 
		if(map.containsKey(id)){
			map.remove(id);
		}else System.out.println("未找到该id");
		
	}
}
